Named Pipe দিয়ে বিভিন্ন প্রক্রিয়ার মধ্যে যোগাযোগ

Pipes এবং Named Pipes (FIFO) - ইন্টার প্রসেস কমিউনিকেশন (Inter Process Communication) - Computer Science

446

Named Pipe হল একটি শক্তিশালী যোগাযোগ পদ্ধতি যা বিভিন্ন প্রক্রিয়ার মধ্যে তথ্য বিনিময়ের জন্য ব্যবহৃত হয়। এটি অপারেটিং সিস্টেমের স্তরে কাজ করে এবং একটি প্রক্রিয়া থেকে অন্য প্রক্রিয়ায় ডেটা পাঠাতে এবং গ্রহণ করতে সাহায্য করে। Named Pipe সাধারণত UNIX, Linux এবং Windows সিস্টেমে ব্যবহৃত হয়।

Named Pipe এর বৈশিষ্ট্য

  • একক প্রক্রিয়া ও মাল্টি-প্রসেসে ব্যবহার: Named Pipe ব্যবহার করে একাধিক প্রক্রিয়া একই সময়ে ডেটা পাঠাতে এবং গ্রহণ করতে পারে।
  • দূরবর্তী যোগাযোগ: Named Pipe স্থানীয় এবং দূরবর্তী যোগাযোগ উভয়ের জন্য ব্যবহৃত হতে পারে, তবে সাধারণত এটি স্থানীয়ভাবে ব্যবহৃত হয়।
  • ফার্স্ট ইন ফার্স্ট আউট (FIFO): Named Pipe FIFO (First In First Out) ভিত্তিতে কাজ করে, অর্থাৎ প্রথমে পাঠানো ডেটা প্রথমে গ্রহণ করা হয়।

Named Pipe এর সুবিধা

  1. দ্রুততা: Named Pipe সাধারণত দ্রুত এবং কার্যকর, কারণ এটি অপারেটিং সিস্টেমের মধ্যে সরাসরি ডেটা স্থানান্তর করে।
  2. সহজ ব্যবস্থাপনা: Named Pipe ব্যবহারের মাধ্যমে প্রক্রিয়াগুলি সহজে যোগাযোগ করতে পারে এবং এটি পরিচালনা করা সহজ।
  3. একাধিক সংযোগ: একাধিক প্রক্রিয়া একটি Named Pipe এর মাধ্যমে যোগাযোগ করতে পারে, যা মাল্টি-প্রসেস আর্কিটেকচারের জন্য উপকারী।

Named Pipe এর অসুবিধা

  1. কমপ্লেক্সিটি: Named Pipe সেটআপ এবং ব্যবস্থাপনা কিছুটা জটিল হতে পারে, বিশেষ করে বড় সিস্টেমে।
  2. ভূমিকা ও অনুমতি: Named Pipe ব্যবহার করার সময় সঠিক অনুমতি এবং নিরাপত্তার ব্যবস্থা থাকতে হবে, যা অতিরিক্ত জটিলতা সৃষ্টি করতে পারে।

Named Pipe দিয়ে যোগাযোগের উদাহরণ

উদাহরণ: Python এ Named Pipe ব্যবহার

ধরি, আমাদের একটি প্রক্রিয়া তথ্য পাঠাবে এবং অন্য একটি প্রক্রিয়া সেই তথ্য গ্রহণ করবে।

Writer Process (Producer):

import os
import time

# Named pipe path
pipe_path = '/tmp/my_named_pipe'

# Create named pipe
if not os.path.exists(pipe_path):
    os.mkfifo(pipe_path)

# Open the named pipe for writing
with open(pipe_path, 'w') as fifo:
    for i in range(5):
        msg = f'Message {i}\n'
        fifo.write(msg)
        fifo.flush()  # Ensure message is sent
        print(f'Sent: {msg.strip()}')
        time.sleep(1)  # Sleep for a second

Reader Process (Consumer):

import os

# Named pipe path
pipe_path = '/tmp/my_named_pipe'

# Open the named pipe for reading
with open(pipe_path, 'r') as fifo:
    while True:
        msg = fifo.read()
        if msg:
            print(f'Received: {msg.strip()}')

ব্যাখ্যা

Writer Process:

  • প্রথমে একটি Named Pipe তৈরি করা হয়।
  • পরবর্তী সময়ে, Writer Process প্রতি সেকেন্ডে একটি বার্তা লেখে এবং তা Named Pipe এর মাধ্যমে প্রেরণ করে।

Reader Process:

  • Reader Process Named Pipe থেকে বার্তা পড়ে এবং তা প্রদর্শন করে।
  • এটি প্রথমে অপেক্ষা করে বার্তা আসার জন্য এবং তারপর সেই বার্তাটি প্রদর্শন করে।

উপসংহার

Named Pipe হল একটি কার্যকরী উপায় বিভিন্ন প্রক্রিয়ার মধ্যে তথ্য বিনিময়ের জন্য। এটি একাধিক প্রক্রিয়া সহজে এবং দ্রুত যোগাযোগ করতে সহায়ক। Named Pipe ব্যবহার করে প্রক্রিয়াগুলির মধ্যে সঠিকভাবে তথ্য আদান-প্রদান করতে হলে সঠিকভাবে সেট আপ এবং পরিচালনা করা গুরুত্বপূর্ণ।

Promotion

Are you sure to start over?

Loading...